home *** CD-ROM | disk | FTP | other *** search
/ Compendium Deluxe 2 / LSD and 17bit Compendium Deluxe - Volume II.iso / a / prog / misc / gfront11.lha / GUIFront / Demos / Source / person.c < prev    next >
C/C++ Source or Header  |  1994-11-01  |  4KB  |  152 lines

  1.  
  2. /* Person.c - Personal data entry form for an employee
  3.  *
  4. /* This is a GUIFront example GUI. To build an example, compile and link this
  5.  * file with Generic.o (also supplied).
  6.  * Everything prefixed with DEMO_ is exported to Generic.o.
  7.  */
  8.  
  9. #include <libraries/guifront.h>
  10.  
  11. /* First, some Gadget ID's */
  12.  
  13. enum
  14. {
  15.     GID_NAME,
  16.     GID_ADDRESS,
  17.     GID_ZIP,
  18.     GID_CITY,
  19.     GID_PHONE,
  20.     GID_DEPARTMENT,
  21.     GID_AGE,
  22.     GID_SEX,
  23.     GID_COLOR,
  24. };
  25.  
  26. /* Some data and tag items we'll be needing later */
  27.  
  28. static const STRPTR deptcyclelabels[] =
  29. {
  30.     "New York",
  31.     "Sydney",
  32.     "Rio",
  33.     "Hamburg",
  34.     "Copenhagen",
  35.     NULL,
  36. };
  37.  
  38. static const struct TagItem deptcycletags[] =
  39. {
  40.     {GTCY_Labels, deptcyclelabels},
  41.     {TAG_DONE},
  42. };
  43.  
  44. static const STRPTR sexmxlabels[] =
  45. {
  46.     "Male",
  47.     "Female",
  48.     NULL
  49. };
  50.  
  51. static const struct TagItem sexmxtags[] =
  52. {
  53.     {GTMX_Labels, sexmxlabels},
  54.     {GTMX_TitlePlace, PLACETEXT_ABOVE},
  55.     {TAG_DONE},
  56. };
  57.  
  58. static const struct TagItem colortags[] =
  59. {
  60.     {GTPA_Depth, 2},
  61.     {TAG_DONE},
  62. };
  63.  
  64. /* Now, the GadgetSpec's we'll be needing for this GUI */
  65.  
  66. static GadgetSpec gadgetspecs[] =
  67. {
  68.     {STRING_KIND, 20,0, {0,0,0,0,"Name:",      NULL,GID_NAME,PLACETEXT_LEFT}, NULL, GS_DefaultTags},
  69.     {STRING_KIND, 20,0, {0,0,0,0,"Address:",   NULL,GID_ADDRESS,PLACETEXT_LEFT}, NULL, GS_DefaultTags},
  70.     {STRING_KIND,  4,0, {0,0,0,0,"Zip:",       NULL,GID_ZIP,PLACETEXT_LEFT},NULL,GS_DefaultTags | GS_NoWidthExtend},
  71.     {STRING_KIND,  0,0, {0,0,0,0,"City:",      NULL,GID_CITY,PLACETEXT_LEFT},NULL,GS_DefaultTags},
  72.     {STRING_KIND,  0,0, {0,0,0,0,"Phone:",     NULL,GID_PHONE,PLACETEXT_LEFT},NULL,GS_DefaultTags},
  73.     {CYCLE_KIND,   0,0, {0,0,0,0,"Department:",NULL,GID_DEPARTMENT,PLACETEXT_LEFT},deptcycletags,GS_DefaultTags},
  74.     {STRING_KIND,  0,0, {0,0,0,0,"Age:",       NULL,GID_AGE,PLACETEXT_LEFT},NULL,GS_DefaultTags},
  75.     {MX_KIND,      0,0, {0,0,0,0,"Sex",        NULL,GID_SEX,PLACETEXT_RIGHT},sexmxtags,GS_DefaultTags},
  76.     {PALETTE_KIND,10,0, {0,0,0,0,"Favourite color:",NULL,GID_COLOR,PLACETEXT_LEFT},colortags,GS_DefaultTags},
  77. };
  78.  
  79. /* Now, we group all of these GadgetSpecs into an array of pointers, so the
  80.  * layout engine can locate gadgets merely by their Gadget IDs.
  81.  */
  82.  
  83. GadgetSpec *DEMO_GadgetSpecList[] =
  84. {
  85.     &gadgetspecs[0], &gadgetspecs[1], &gadgetspecs[2], &gadgetspecs[2],
  86.     &gadgetspecs[3], &gadgetspecs[4], &gadgetspecs[5], &gadgetspecs[6],
  87.     &gadgetspecs[7], &gadgetspecs[8], NULL,
  88. };
  89.  
  90. /* Finally, the layout tag list itself. This is where most of the work is
  91.  * done. This list completely describes how the above gadgets are arranged
  92.  * in groups in the GUI.
  93.  */
  94.  
  95. ULONG DEMO_LayoutList[] =
  96. {
  97.     GUIL_Flags, GUILF_PropShare | GUILF_EqualWidth,
  98.  
  99.     GUIL_VertGroup, 1,
  100.         GUIL_Flags, GUILF_PropShare | GUILF_EqualWidth | GUILF_LabelAlign,
  101.  
  102.         GUIL_GadgetSpecID, GID_NAME,
  103.         GUIL_GadgetSpecID, GID_ADDRESS,
  104.  
  105.         GUIL_HorizGroup, 1,
  106.             GUIL_Flags, GUILF_PropShare | GUILF_EqualHeight,
  107.             GUIL_GadgetSpecID, GID_ZIP,
  108.             GUIL_GadgetSpecID, GID_CITY,
  109.         TAG_DONE,
  110.  
  111.         GUIL_GadgetSpecID, GID_DEPARTMENT,
  112.     TAG_DONE,
  113.  
  114.     GUIL_HorizGroup, 1,
  115.         GUIL_Flags, GUILF_PropShare,
  116.  
  117.         GUIL_VertGroup, 1,
  118.             GUIL_Flags, GUILF_PropShare | GUILF_EqualWidth | GUILF_LabelAlign,
  119.             GUIL_GadgetSpecID, GID_AGE,
  120.             GUIL_GadgetSpecID, GID_COLOR,
  121.         TAG_DONE,
  122.  
  123.         GUIL_GadgetSpecID, GID_SEX,
  124.     TAG_DONE,
  125.  
  126.     TAG_DONE,
  127. };
  128.  
  129. /* Obligatory version tag */
  130.  
  131. static const char ver[] = "$VER: Person 1.0 " __AMIGADATE__;
  132.  
  133. /* Now, some globals used by Generic.o during the call to GF_CreateGUIA() */
  134.  
  135. /* The initial orientation of the GUI. In this case, it's vertical. This means
  136.  * the three button gadgets, which we just grouped together, will be placed
  137.  * in a vertical group. Alternatively, we could have used GUIL_HorizGroup
  138.  * to make the initial orientation horizontal (surprise :-)
  139.  */
  140.  
  141. int DEMO_InitialOrientation = GUIL_VertGroup;
  142.  
  143. STRPTR DEMO_WindowTitle = "Person GUI";
  144. STRPTR DEMO_AppID       = "Person";
  145.  
  146. STRPTR DEMO_Version     = "1.0",
  147.        DEMO_LongDesc    = "Demo program - Personal data entry",
  148.        DEMO_Author      = "Michael Berg",
  149.        DEMO_Date        = __AMIGADATE__;
  150.  
  151. BOOL   DEMO_Backfill    = FALSE;
  152.